#输出 n 以内的所有素数
def find_primes(n):
    if n < 2:
        return []
    
    # 初始化一个布尔数组，默认所有数都是素数
    is_prime = [True] * (n + 1)
    is_prime[0] = is_prime[1] = False  # 0和1不是素数

    # 筛法过程
    for i in range(2, int(n**0.5) + 1):
        if is_prime[i]:
            for j in range(i*i, n + 1, i):
                is_prime[j] = False

    # 收集所有素数
    primes = [i for i in range(2, n + 1) if is_prime[i]]
    
    return primes

# 主程序
if __name__ == "__main__":
    n = int(input())
    primes = find_primes(n)
    print(" ".join(map(str, primes)))

